// createElement.js
// 真正创建节点，将vnode创建为DOM，是孤儿节点，不进行插入
export default function createElement(vnode) {
    let domNode = document.createElement(vnode.sel)
    // 有子节点还是有文本 这是针对我们的简单版本，并没有像源码那样实现全部
    if (vnode.text !== '' && (vnode.children === undefined || vnode.children.length === 0)) {
        // 它内部是文字
        domNode.innerText = vnode.text
    } else if (Array.isArray(vnode.children) && vnode.children.length > 0) {
        // 内部是子节点时，就要递归创建节点
        for (let i = 0; i < vnode.children.length; i++) {
            // 得到当前这个children
            let ch = vnode.children[i]
            // 创建出它的DOM，一旦调用cerateElement意味着，创建出了DOM，并且它的elm属性指向了创建出的DOM，但是还没有上树，是一个孤儿节点
            let chDom = createElement(ch)
            // 上树
            domNode.appendChild(chDom)
        }
    }
    // 补充elm属性
    vnode.elm = domNode
    // 返回elm，elm属性是一个纯DOM对象
    return vnode.elm
}